"""
题目需求：实现字符串压缩功能，将连续重复的字符替换为 "字符 + 出现次数"。如果压缩后的字符串没有变短，则返回原字符串。
示例：
输入："aabcccccaaa"
输出："a2b1c5a3"（压缩后更短）
输入："abcdef"
输出："abcdef"（压缩后更长，返回原字符串）

代码解释：
处理空字符串情况，直接返回空。
初始化result列表（用于高效拼接）、current_char（当前字符，初始为第一个字符）和count（计数，初始为 1）。
遍历字符串从第二个字符开始的部分：
    若与current_char相同，计数加 1。
    若不同，将current_char和count加入result，并更新current_char和count。
遍历结束后，将最后一组字符和计数加入result。
比较压缩后字符串与原字符串的长度，返回较短的那个。
"""
def compress(s):
    # 处理空字符串
    if not s:
        return ""
    # 初始化结果列表（用列表效率高于字符串拼接）
    result = []
    # 记录当前字符和出现次数
    current_char = s[0]
    count = 1
    # 遍历字符串剩余字符
    for char in s[1:]:
        if char == current_char:
            # 字符相同，次数加1
            count += 1
        else:
            # 字符不同，将当前字符和次数加入结果
            result.append(current_char)
            result.append(str(count))
            # 更新当前字符和次数
            current_char = char
            count = 1
    # 处理最后一组字符
    result.append(current_char)
    result.append(str(count))
    # 转为字符串
    compressed = ''.join(result)
    # 比较压缩前后的长度，返回较短的
    return compressed if len(compressed) < len(s) else s


# 测试
print(compress("aabcccccaaa"))  # 输出: "a2b1c5a3"
print(compress("abcdef"))  # 输出: "abcdef"
